<?php

namespace Wgx\Admin\Com\Crud;

abstract class EditPageInputBase
{
    const InputHidden = 'inputHidden'; // 已实现

    const InputText = 'inputText'; // 已实现
    const InputNumber = 'inputNumber'; // 已实现
    const InputTel = 'inputTel'; // 已实现
    const InputEmail = 'inputEmail'; // 已实现
    const InputPassword = 'inputPassword'; // 已实现
    const InputFile = 'inputFile'; // todo 待实现
    const InputColor = 'inputColor'; // todo 待实现
    const InputDateTime = 'inputDateTime'; // todo 待实现
    const InputDate = 'inputDate'; // todo 待实现
    const InputTime = 'inputTime'; // todo 待实现
    const InputMonth = 'inputMonth'; // todo 待实现
    const InputWeek = 'inputWeek'; // todo 待实现
    const InputCheckbox = 'inputCheckbox'; // 已实现

    const InputRadioGroup = 'inputRadioGroup'; // todo 待实现
    const InputCheckboxGroup = 'inputCheckboxGroup'; // 已实现

    const InputSelect = 'inputSelect'; // 已实现
    const InputSelect2 = 'inputSelect2'; // todo 待实现 2级联动选择器
    const InputSelect3 = 'inputSelect3'; // todo 待实现 3级联动选择器
    const InputSelectOnline = 'inputSelectOnline'; // 已实现 联网搜索选择器
    const InputTextarea = 'inputTextarea'; // todo 待实现

    const InputCustomize = 'inputCustomize'; // 用户自定义，需要用户自定义 dom, 自定义交互, 自定义提交的数据

    /**
     * 原值, protected 保证子类可以设置这个字段
     * @var mixed
     */
    protected $origValue;

    /**
     * @return string
     */
    abstract public function getInputType();

    /**
     * @return mixed
     */
    public function getOrigValue()
    {
        return $this->origValue;
    }

    /**
     * @param mixed $origValue
     * @return EditPageInputBase
     */
    public function setOrigValue($origValue)
    {
        $this->origValue = $origValue;
        return $this;
    }

    /**
     * 用于指示前端对用户输入进行 required 判断
     * 只有指定了使用用户输入控件 $isRequired 才有意义
     * @return bool
     */
    abstract public function getIsRequired();

}